home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
QRZ! Ham Radio 8
/
QRZ Ham Radio Callsign Database - Volume 8.iso
/
pc
/
files
/
mac
/
proj_a1.hqx
/
Project Mac - A1
/
MorseSender
< prev
next >
Wrap
Text File
|
1984-12-14
|
3KB
|
134 lines
REM Morse Sender by Mark Aaker, NT6G Copyright 1984
REM modified from Morse Code Practice by Larry Jones, W0AY
PRINT
PRINT "Morse Sender:"
PRINT "I'll send groups of 5 characters selected at random."
PRINT "Please wait while I get set up. . ."
REM Set up Waveform
DIM A%(260)
FOR I% = -127 TO 128
LET A%(I% +127) = INT(80*(ATN(I%)))
NEXT I%
WAVE 1, A%
REM Set up sound defaults
freq = 600
dur = 2.2
volume = 255
REM Set up other default variables
RANDOMIZE TIMER
REM Read letter and morse equivalent data from 8x5 table
FOR I= 1 TO 8
FOR J= 1 TO 5
READ LTR$(I,J), MRSE$(I,J)
NEXT J
NEXT I
DATA 5,IIIII,0,AAAAA,E,I,T,A,A,IA
DATA S,III,L,IAII,U,IIA,Q,AAIA,J,IAAA
DATA H,IIII,O,AAA,N,AI,C,AIAI,V,IIIA
DATA I,II,B,AIII,Y,AIAA,P,IAAI,R,IAI
DATA W,IAA,K,AIA,Z,AAII,M,AA,D,AII
DATA X,AIIA,F,IIAI,G,AAI,",",AAIIAA,.,IAIAIA
DATA 1,IAAAA,2,IIAAA,3,IIIAA,4,IIIIA,/,AIIAI
DATA 6,AIIII,7,AAIII,8,AAAII,9,AAAAI,?,IIAAII
REM Get user input
getinput:
PRINT
PRINT "Enter zero to quit."
INPUT "How many minutes shall I send "; minutes
IF (minutes = 0) THEN GOTO ending
INPUT "At what words per minute speed "; wpm
IF (wpm = 0) THEN GOTO ending
PRINT " "
REM calculate Number of Letters to send
REM 5/6 adjusts since random letter groups are longer than English text
NL = minutes * wpm * 5! * 5!/6!
REM Fudge * Macdur * random group speed
dur = .933 * 18.2 * 1!/ wpm
REM reset counters
lcount = 0
wcount = 1
REM Start sound gen. to get past starting click
REM and wait for disk to stop
SOUND 0, 77, 0, 1
SOUND 0, 77, 0, 1
start:
REM For each Letter to Send
FOR LS= 1 TO NL
REM Randomly pick a letter out of 8x5 table
I= 1 + INT(RND(1) * 8)
J= 1 + INT(RND(1) * 5)
REM Check if 6th letter, send word space first
lcount = lcount + 1
IF (lcount < 6) THEN GOTO Send
GOSUB wspace
PRINT " ";
lcount = 1
wcount = wcount + 1
REM Check if 6th word, send return first
IF (wcount < 6) THEN GOTO Send
PRINT " "
wcount = 1
REM Send all morse elements of the letter, Dit or Dah
Send:
FOR DOD = 1 TO LEN(MRSE$(I,J))
IF MID$(MRSE$(I,J),DOD,1) = "I" THEN GOSUB dit
IF MID$(MRSE$(I,J),DOD,1) = "A" THEN GOSUB dah
NEXT DOD
REM Send a letter space after the letter
GOSUB lspace
REM print the letter
PRINT LTR$(I, J);
REM Loop for next letter
NEXT LS
REM All letters sent, send space
SOUND 0, 77, 0, 1
REM waste time so disk won't start till sound done
FOR k = 1 TO 2047
NEXT k
GOTO getinput
ending:
SYSTEM
END
REM Subroutine dit
dit:
SOUND freq, dur, volume, 1
SOUND 0, dur, 0, 1
RETURN
REM Subroutine dah
dah:
SOUND freq, 3*dur, volume, 1
SOUND 0, dur, 0, 1
RETURN
REM Subroutine letter space
lspace:
SOUND 0, 3 * dur, 0, 1
RETURN
REM Subroutine word space
wspace:
SOUND 0, 7 * dur, 0, 1
RETURN